<script setup lang="ts">
import { onHide, onLaunch, onShow } from '@dcloudio/uni-app'
import { useThemeStore } from '@/store/theme'
import { platformSummary } from '@/utils/platform'

// 状态管理

const themeStore = useThemeStore()

// 应用启动
onLaunch(() => {
  console.log('应用启动')
  console.log('平台信息:', platformSummary)

  // 初始化主题
  themeStore.initTheme()

  // 获取系统信息
  const systemInfo = uni.getSystemInfoSync()
  console.log('系统信息:', systemInfo)

  // 检查更新（仅 App 端）
  // #ifdef APP-PLUS
  checkAppUpdate()
  // #endif
})

// 应用显示
onShow(() => {
  console.log('应用显示')

  // 应用从后台进入前台时的逻辑
  // 例如：刷新数据、检查登录状态等
})

// 应用隐藏
onHide(() => {
  console.log('应用隐藏')

  // 应用从前台进入后台时的逻辑
  // 例如：保存数据、暂停定时器等
})

// 检查应用更新（App 端）
// #ifdef APP-PLUS
function checkAppUpdate() {
  // 检查更新
  plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
    console.log('应用版本信息:', widgetInfo)

    // 这里可以调用后端接口检查是否有新版本
    // checkVersionUpdate(widgetInfo.version)
  })
}
// #endif

// 全局错误监听
uni.onError((error) => {
  console.error('全局错误:', error)

  // 可以在这里上报错误到监控系统
  // reportError(error)
})

// 网络状态监听
uni.onNetworkStatusChange((res) => {
  console.log('网络状态变化:', res)

  if (!res.isConnected) {
    uni.showToast({
      title: '网络连接已断开',
      icon: 'none',
    })
  }
})

// 监听系统主题变化（H5 端）
// #ifdef H5
if (typeof window !== 'undefined' && window.matchMedia) {
  const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')
  const handleThemeChange = (e: MediaQueryListEvent) => {
    if (themeStore.currentTheme === 'auto') {
      themeStore.updateDarkMode()
    }
  }

  mediaQuery.addEventListener('change', handleThemeChange)
}
// #endif
</script>

<style lang="scss">
/* 注意这里不要添加 scoped，这是全局样式 */

/* 应用全局样式 */
</style>
